home *** CD-ROM | disk | FTP | other *** search
- unit Apihooks;
-
- {$ALIGN ON}
- {$MINENUMSIZE 4}
-
- interface
-
- uses
- Windows;
-
- type
- PPointer = ^Pointer;
- USHORT = Word;
-
- // ApiHook.pas - constants and structures for Hook libraries
-
- const
- HOOK_EXPORT = 0001;
- HOOK_IMPORT = 0002;
- HOOK_BY_ADDRESS = 0004;
- HOOK_HARD = 0008;
- HOOK_NO_UNBIND = 0016;
-
- HOOKS_END = LPCSTR(-1); // IF UNICODE LPCWSTR
- HOOKS_DYNAMIC = LPCSTR(-2); // IF UNICODE LPCWSTR
- ALL_MODULES = LPCSTR(-1); // IF UNICODE LPCWSTR
-
- type
- TADDR_CONTENTS =
-
- record
- ReturnWhere : ^DWORD;
- ReturnWhat : DWORD;
- end;
-
- PADDR_CONTENTS = ^TADDR_CONTENTS;
-
- TAPI_UNHOOK =
-
- record
- MaxNoAddr : DWORD;
- CurNoAddr : DWORD;
- WhereWhat : PADDR_CONTENTS;
- end;
-
- PAPI_UNHOOK = ^TAPI_UNHOOK;
-
- TAPI_HOOK =
-
- record
- ModuleExport : LPCSTR;
- ApiNameOrOrd : LPCSTR;
- dwFlags : DWORD;
- ModuleImport : LPCSTR;
- UnhookAddresses : PAPI_UNHOOK;
- HookAddress : Pointer;
- end;
-
- PAPI_HOOK = ^TAPI_HOOK;
-
- function EstablishApiHooksA (lpszDll : LPCSTR; ProcessId : DWORD) : DWORD; stdcall;
- function EstablishApiHooksW (lpszDll : LPCWSTR; ProcessId : DWORD) : DWORD; stdcall;
- function EstablishApiHooks (lpszDll : LPCSTR; ProcessId : DWORD) : DWORD; stdcall;
-
- function EstablishApiHooksTimeA (lpszDll : LPCSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
- function EstablishApiHooksTimeW (lpszDll : LPCWSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
- function EstablishApiHooksTime (lpszDll : LPCSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
-
- function EstablishApiHooksTimeNTA (lpszDll : LPCSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
- function EstablishApiHooksTimeNTW (lpszDll : LPCWSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
- function EstablishApiHooksTimeNT (lpszDll : LPCSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
-
- function RemoteExecuteTime (ProcessId : DWORD; dwMilliseconds : DWORD; lpBlock : DWORD; BlockSize: DWORD; lpCodeEnd: DWORD) : DWORD; stdcall;
- function RemoteExecuteTimeNT (ProcessId : DWORD; dwMilliseconds : DWORD; lpBlock : DWORD; BlockSize: DWORD; lpCodeEnd: DWORD) : DWORD; stdcall;
-
- function IsModuleLoadedA (lpszDll : LPCSTR; ProcessId : DWORD) : DWORD; stdcall;
- function IsModuleLoadedW (lpszDll : LPCWSTR; ProcessId : DWORD) : DWORD; stdcall;
- function LoadAndCallA (lpszDll : LPCSTR; ProcessId : DWORD; HowManyTimes : DWORD; ApiNameOrOrd : LPCSTR) : DWORD; stdcall;
- function LoadAndCallW (lpszDll : LPCWSTR; ProcessId : DWORD; HowManyTimes : DWORD; ApiNameOrOrd : LPCWSTR) : DWORD; stdcall;
- function UnloadModuleA (lpszDll : LPCSTR; ProcessId : DWORD; HowManyTimes : DWORD) : DWORD; stdcall;
- function UnloadModuleW (lpszDll : LPCWSTR; ProcessId : DWORD; HowManyTimes : DWORD) : DWORD; stdcall;
-
- function HookApiA (ModuleExport : LPCSTR; ApiNameOrOrd : LPCSTR; dwFlags : DWORD; ModuleImport : LPCSTR; ApiUnhook : PAPI_UNHOOK; HookAddress : LPVOID; ExcludeModules : LPDWORD) : DWORD; stdcall;
- function HookApiW (ModuleExport : LPCWSTR; ApiNameOrOrd : LPCWSTR; dwFlags : DWORD; ModuleImport : LPCWSTR; ApiUnhook : PAPI_UNHOOK; HookAddress : LPVOID; ExcludeModules : LPDWORD) : DWORD; stdcall;
-
- const
- ErrorSuccess = 0;
- ErrorException = 1;
- ErrorOpenProcess = 2;
- ErrorRemoteAlloc = 3;
- ErrorRemoteExec = 4;
- ErrorRemoteFree = 5;
- ErrorTimeOut = 9;
-
- HOOK_EXACT = HOOK_EXPORT or HOOK_IMPORT;
- HOOK_ALL = HOOK_EXPORT or HOOK_BY_ADDRESS;
-
- implementation
-
- const
- ApihooksDll = 'apihooks.dll';
-
- function EstablishApiHooksA; external ApihooksDll name 'EstablishApiHooksA';
- function EstablishApiHooksW; external ApihooksDll name 'EstablishApiHooksW';
- function EstablishApiHooks; external ApihooksDll name 'EstablishApiHooksA';
-
- function EstablishApiHooksTimeA; external ApihooksDll name 'EstablishApiHooksTimeA';
- function EstablishApiHooksTimeW; external ApihooksDll name 'EstablishApiHooksTimeW';
- function EstablishApiHooksTime; external ApihooksDll name 'EstablishApiHooksTimeA';
-
- function EstablishApiHooksTimeNTA; external ApihooksDll name 'EstablishApiHooksTimeNTA';
- function EstablishApiHooksTimeNTW; external ApihooksDll name 'EstablishApiHooksTimeNTW';
- function EstablishApiHooksTimeNT; external ApihooksDll name 'EstablishApiHooksTimeNTA';
-
- function RemoteExecuteTime; external ApihooksDll name 'RemoteExecuteTime';
- function RemoteExecuteTimeNT; external ApihooksDll name 'RemoteExecuteTimeNT';
-
- function IsModuleLoadedA; external ApihooksDll name 'IsModuleLoadedA';
- function IsModuleLoadedW; external ApihooksDll name 'IsModuleLoadedW';
- function IsModuleLoaded; external ApihooksDll name 'IsModuleLoadedA';
-
- function LoadAndCallA; external ApihooksDll name 'LoadAndCallA';
- function LoadAndCallW; external ApihooksDll name 'LoadAndCallW';
- function LoadAndCall; external ApihooksDll name 'LoadAndCallA';
-
- function UnloadModuleA; external ApihooksDll name 'UnloadModuleA';
- function UnloadModuleW; external ApihooksDll name 'UnloadModuleW';
- function UnloadModule; external ApihooksDll name 'UnloadModuleA';
-
- function HookApiA; external ApihooksDll name 'HookApiA';
- function HookApiW; external ApihooksDll name 'HookApiW';
- function HookApi; external ApihooksDll name 'HookApiA';
-
- end.